<?php
class BaseController extends Zend_Controller_Action
{
	protected $_order = "1";
	protected $_asc   = "0";
	protected $parametrosConsulta = "";
	protected $filter;
	protected $validate;
	protected $auth;
	protected $ajaxRequest;

	function init(){
		$this->auth = new Zend_Session_Namespace('Zend_Auth');
		$this->initGlobalVariables();
		/*$this->ajaxRequest = $this->_request->getParam('ajaxRequest');
		$this->montarParametros($this->_request->getPost());
		$this->view->linkVoltar = $this->view->action.$this->parametrosConsulta;*/
	}

	function initGlobalVariables(){
		$this->initView();
		$this->view->baseUrl  = $this->_request->getBaseUrl();
		$this->view->styleUrl = '/styles';
		$this->view->scriptUrl= '/scripts';
		$this->view->imageUrl = '/images';
		$this->view->linkManual = $this->view->baseUrl.'/manual';
		$this->view->sair =  $this->_request->getBaseUrl() . "/auth/logout";
		$this->view->linkHome = $this->view->baseUrl;
		$this->view->linkVoltar = $this->view->baseUrl;
		$this->view->title = null;
		if (!is_null($this->_getParam('controller'))){
			$this->view->controlador = $this->_getParam('controller');
		}
		if (!is_null($this->_getParam('action'))){
			$this->view->executor = $this->_getParam('action');
		}
		//Filtros e validadores
		$this->validate  = new Zend_Validate();
		$this->filter    = new Zend_Filter_StripTags();
		//
		$this->view->infUsuario = $this->auth->nomeUsuario.' - '.$this->auth->nomeFantasiaEmpresa;
		$this->view->idUsuario  = $this->auth->idUsuario;
		/* Carregar id das paginas que são permitidas o acesso*/
	}

	private function validateSession(){
		if ($this->nvl($this->auth->idGrupoAcesso, 0) == 0){
			$this->view->message='Impossível identificar o grupo de acesso.';
			return false;
			}
	}

	public function indexAction(){
	}

	function preDispatch() {
		$auth = Zend_Auth::getInstance();
		$this->validateSession();
		if (!$auth->hasIdentity()) {
			$this->_redirect('/auth/login/');
		}
/*else {
			if ($this->ajaxRequest == 0 && $this->_getParam('controller')!='evento'){
			$this->verificaEvento();
		}
		}*/

	}

	protected function montarParametros($matriz){
		for($i=0; $i<count($matriz); $i++){
			$par   =each($matriz);
			$valor = $par[1];
			$indice= $par[0];
			if (($valor!='0') && ($valor!=NULL) && ($indice!='controller') && ($indice!='module') && ($indice!='action')){
				$this->adicionaParametros($indice, $valor);
			}
		}
	}
	
	protected function adicionaParametros($parametro, $valor){
		if ($this->parametrosConsulta != "")
			$this->parametrosConsulta .= "&";
		else
			$this->parametrosConsulta = "?";
		$this->parametrosConsulta .=  $parametro. "=" . $valor;
	}

	protected function get_post_action($name){
		$params = func_get_args();
		foreach ($params as $name) {
			if (isset($_POST[$name])) {
				return $name;
			}
		}
	}

	protected function nvl($val, $replace){
		return StringFormat::nvl($val, $replace);
	}
	
	protected function verificaEvento(){
	$evento = new Evento();
		$auth = new Zend_Session_Namespace('Zend_Auth');
		if ($auth->idPerfilAcesso==3 || $evento->eventoStatus()==1){
		if ($auth->idPerfilAcesso==3){ //Usuário externo
		$acesso = new AcessoEvento();
		$acesso->loadPessoa($authNamespace->idFisica);
		$evento->load($acesso->id_evento);
	}
		$auth->idEvento =$evento->id_evento;
		$auth->nmEvento =$evento->nm_evento;
		}else{
			if ($evento->eventoStatus()==2){ //Possui mais de um evento válido selecionar
			$redirect='/evento/select';
	} elseif ($evento->eventoStatus()==3){ //Não possui eventos válidos cadastrados
		$redirect='/evento/add';
	}
	$this->_redirect($redirect);
	}
	}
/* validação antes de executar os controllers
	* if (count(UtilController::getOptionEvento(1))==0){
$this->view->message="<br>Não existe evento válido cadastrado.";
$this->_redirect(null);
}
*/
}
